package com.zb.mobile;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.zb.vo.WorkFinishOrderTemplateVo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 * @Author WEN
 * @Date 2023/11/28 0028
 **/
@Data
@ApiModel("服务商工单详情信息对象")
public class NetworkOrderDetailVo {
    @ApiModelProperty(value = "工单ID")
    private Long id;

    @ApiModelProperty(value = "工单单号")
    private String workNo;

    @ApiModelProperty(value = "服务商工单状态：1-待接单，2-待派工，3-待工程师接单，4-服务中，5-待结单，6-已完成，7-已取消， 50-待结算；" +
            "                  工程师工单状态：1-待接单，2-服务中，3-待结单，4-已完成，5-已取消， 50-待结算；     ")
    private Integer status;

    @ApiModelProperty(value = "待结算：false-未待结算，true-是待结算")
    private Boolean waitSettlement = Boolean.FALSE;

    @ApiModelProperty(value = "质保状态，是否保外：false-保内，true-保外")
    private Boolean overinsured;

    @ApiModelProperty(value = "工单模块")
    private String module;

    @ApiModelProperty(value = "工单等级")
    private String workLevel;

    @ApiModelProperty(value = "工单等级颜色")
    private String workLevelColor;

    @ApiModelProperty(value = "工单客户名称")
    private String userName;

    @ApiModelProperty(value = "工单客户手机号")
    private String userPhone;

    @ApiModelProperty(value = "工单客户地址-省")
    private String province;

    @ApiModelProperty(value = "工单客户地址-市")
    private String city;

    @ApiModelProperty(value = "工单客户地址-县/区")
    private String area;

    @ApiModelProperty(value = "工单客户地址-镇")
    private String town;

    @ApiModelProperty(value = "工单客户详细地址")
    private String address;

    @ApiModelProperty(value = "申请类型：1-工程师转单待审核")
    private Integer applyType;

    @ApiModelProperty(value = "是否有待审核的工单（转单待审核等）：false-没有，true-有")
    private Boolean waitCheckOrder = Boolean.FALSE;

    @ApiModelProperty(value = "申请时间")
    private Date waitCheckApplyTime;

    @ApiModelProperty(value = "申请人")
    private String waitCheckApplyEmp;

    @ApiModelProperty(value = "申请类型")
    private String waitCheckApplyType;

    @ApiModelProperty(value = "申请备注")
    private String applyRemark;

    @ApiModelProperty(value = "期望上门日期")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date expectedDate;

    @ApiModelProperty(value = "期望开始上门时间")
    @JsonFormat(pattern = "HH:mm")
    private Date expectedStartTime;

    @ApiModelProperty(value = "期望结束上门时间")
    @JsonFormat(pattern = "HH:mm")
    private Date expectedEndTime;

    @ApiModelProperty(value = "客服派单时间")
    private Date serviceDispatchNetworkTime;

    @ApiModelProperty(value = "服务商接单时间")
    private Date networkReceiveTime;

    @ApiModelProperty(value = "报单时间")
    private Date createTime;

    @ApiModelProperty(value = "更新时间")
    private Date updateTime;

    @ApiModelProperty(value = "是否工程师：false-不是，true-是")
    private boolean engineer = Boolean.FALSE;

    @ApiModelProperty(value = "是否预约：false-未预约，true-已预约")
    private boolean reservation = Boolean.FALSE;

    @ApiModelProperty(value = "是否签到：false-未签到，true-已签到")
    private boolean signIn = Boolean.FALSE;

    @ApiModelProperty(value = "工程师预约日期")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date reservationDate;

    @ApiModelProperty(value = "工程师预约开始时间")
    @JsonFormat(pattern = "HH:mm")
    private Date reservationStartTime;

    @ApiModelProperty(value = "工程师预约结束时间")
    @JsonFormat(pattern = "HH:mm")
    private Date reservationEndTime;

    @ApiModelProperty(value = "服务商派工时间")
    private Date networkDispatchToEnginnerTime;

    @ApiModelProperty(value = "派单工程师表ID")
    private Long dispatchEngineerId;

    @ApiModelProperty(value = "服务工程师ID")
    private Long networkEngineerId;

    @ApiModelProperty(value = "派工的工程师名称")
    private String enginnerName;

    @ApiModelProperty(value = "派工的工程师手机号")
    private String enginnerPhone;

    @ApiModelProperty(value = "拨打电话类型：0-关闭，1-必须拨打")
    private Integer callPhoneType;

    @ApiModelProperty(value = "拨打电话次数")
    private Integer callPhoneQty;

    @ApiModelProperty(value = "是否填写拨打电话结果：false-未填写，true-已填写")
    private Boolean writeCallPhoneResult;

    @ApiModelProperty(value = "申请结单时间")
    private Date applyfinishTime;

    @ApiModelProperty(value = "应收金额")
    private BigDecimal receivableMoney;

    @ApiModelProperty(value = "实收金额")
    private BigDecimal actualReceivedMoney;

    @ApiModelProperty(value = "工单结单时间")
    private Date orderEndTime;

    @ApiModelProperty(value = "取消工单时间")
    private Date cancelOrderTime;

    @ApiModelProperty(value = "取消人姓名")
    private String cancelOrderEmp;

    @ApiModelProperty(value = "工单是否挂起：false-未挂起，true-已挂起")
    private boolean suspendOrder = Boolean.FALSE;

    @ApiModelProperty(value = "工单节点是否超时：false-未超时，true-已超时")
    private boolean nodeTimeout = Boolean.FALSE;

    @ApiModelProperty(value = "工单节点超时时长")
    private String nodeTimeoutLength;

    @ApiModelProperty(value = "是否有申请改派服务商待审核的工单：false-没有，true-有，此字段作用于服务商负责人，申请改派后，相关操作禁用或隐藏")
    private boolean applyChangeNetworkWaitCheckOrder = Boolean.FALSE;

    @ApiModelProperty(value = "是否有申请取消工单待审核的工单：false-没有，true-有，此字段作用于服务商负责人，申请取消后，相关操作禁用或隐藏")
    private Boolean applyCancelOrderWaitCheck = Boolean.FALSE;

    @ApiModelProperty(value = "工程师是否有申请转单：false-没有，true-有，此字段作用于工程师，申请转单后，相关操作禁用或隐藏")
    private Boolean engineerApplyChangeOrder = Boolean.FALSE;

    @ApiModelProperty(value = "工程师是否已申请结单：false-没有，true-有，此字段作用于工程师与服务商负责人，申请结单后，相关操作禁用或隐藏")
    private Boolean hasApplyFinishOrder = Boolean.FALSE;

    @ApiModelProperty(value = "是否有已申请工单费用待审核的：false-没有，true-有")
    private Boolean hasApplyOrderFeeWaitCheck = Boolean.FALSE;

    @ApiModelProperty(value = "是否有已申请工单配件待审核的：false-没有，true-有")
    private Boolean hasApplyOrderSpareWaitCheck = Boolean.FALSE;

    @ApiModelProperty(value = "结单申请人")
    private String finishOrderApplyEmp;

    @ApiModelProperty(value = "结单模板")
    private List<WorkFinishOrderTemplateVo> finishOrderTemplates;

    @ApiModelProperty(value = "电信客户产品识别码，根据此判断结单时是否必填sn码")
    private String teleCustomProIdenCode;

    private List<String> signImageList;

    @ApiModelProperty(value = "是否退回单")
    private Integer isReturn;
    @ApiModelProperty(value = "快递公司")
    private Integer expressCompany;
    @ApiModelProperty(value = "快递单号")
    private String expressNbr;
    @ApiModelProperty(value = "是否暂挂")
    private Integer isPause;
}
